Spring 2025 BAA1030 Data Analytics & Story Telling (20074)
Name : Praghya Prakhar
Student ID: A00039396
Programme: Data Analytics
Executive Summary
This report explores global disparities in child mortality and health inequalities, focusing on data provided by UNICEF. It integrates key indicators such as child mortality rates, health access, and education, highlighting the disparities between high-income and low-income countries. The goal is to raise awareness about the urgent need for intervention in countries with the highest mortality rates.
Introduction
Child mortality remains a major issue worldwide, particularly in low-income nations. UNICEF focuses on improving healthcare, access to clean water, and education to reduce these inequalities. This report analyzes the factors contributing to high mortality rates and suggests potential policy actions to support children’s survival and well-being.
Global Child Mortality and Health Inequalities
Child mortality remains a major issue worldwide, particularly in low-income nations.
UNICEF focuses on saving children’s lives by improving access to healthcare, clean water, and education.
Key Insights:
Child mortality rates are highest in Sub-Saharan Africa.
Economic development strongly impacts health outcomes.
Progress has been made, but disparities remain wide.
Code
import pandas as pdimport geopandas as gpdfrom plotnine import*import matplotlib.pyplot as pltimport geodatasets# Load the CSV filesindicator1 = pd.read_csv("unicef_indicator_1.csv")indicator2 = pd.read_csv("unicef_indicator_2.csv")metadata = pd.read_csv("unicef_metadata.csv")
World Child Mortality Map
Code
import plotly.express as px# Load world map# Prepare world mapworld = gpd.read_file(r'C:\Users\hp\Desktop\UNICEF-Report\data\ne_110m_admin_0_countries\ne_110m_admin_0_countries.shp')world = world.rename(columns={"NAME_EN": "Country"})# Merge mortality datamortality_2020 = indicator1[indicator1['time_period'] ==2020]import plotly.express as pximport pandas as pd# Only keep necessary columns (mortality 2020)mortality_2020 = indicator1[indicator1['time_period'] ==2020]# Now plot using Plotlyfig = px.choropleth( mortality_2020, locations="alpha_3_code", # this must exist in your indicator1 dataset color="obs_value", hover_name="country", color_continuous_scale="Reds", title="Global Child Mortality Rates (2020)", labels={'obs_value': 'Mortality Rate (per 1000 births)'})fig.update_layout( geo=dict(showframe=False, showcoastlines=False), margin={"r":0,"t":50,"l":0,"b":0})fig.show()
Top 10 Countries
Code
# Filter data for 2020mortality_2020 = indicator1[indicator1['time_period'] ==2020]# Sort by 'obs_value' (mortality rate)top10 = mortality_2020.sort_values(by="obs_value", ascending=False).head(10)# Create an interactive bar chart for the top 10 countries# Create a color palette (or choose one that you like)colors = ["#1f77b4", "#ff7f0e", "#2ca02c", "#d62728", "#9467bd", "#8c564b", "#e377c2", "#7f7f7f", "#bcbd22", "#17becf"]# Plot the top 10 countries with different colors(ggplot(top10, aes(x='reorder(country, obs_value)', y='obs_value', fill='country')) + geom_col() + scale_fill_manual(values=colors) +# Apply the color palette coord_flip() + labs(title="Top 10 Countries by Child Mortality Rate (2020)", x="Country", y="Mortality Rate per 1000 births") + theme_minimal())
GDP vs Mortality
Code
# Filter data for 2020 using the correct column name ('time_period')gdp_2020 = indicator2[indicator2['time_period'] ==2020]# Merge mortality and GDP datamerged = pd.merge(mortality_2020, gdp_2020, left_on="country", right_on="country", suffixes=("_mortality", "_gdp"))# Create an interactive scatter plot for GDP vs Mortality Rateimport plotly.express as pxfig = px.scatter( merged, x='obs_value_gdp', y='obs_value_mortality', title="GDP vs Child Mortality Rate (2020)", labels={'obs_value_gdp': 'GDP per Capita', 'obs_value_mortality': 'Mortality Rate per 1000 births'}, color='obs_value_mortality', color_continuous_scale="Viridis")fig.update_layout( xaxis_title="GDP per Capita", yaxis_title="Mortality Rate per 1000 births",)fig.show()
Global Trend Over Time
Code
# Group by time_period (which represents the year) and calculate the average mortality valueavg_mortality = indicator1.groupby('time_period')['obs_value'].mean().reset_index()# Create an interactive line plot for the average global mortality rate over timeimport plotly.express as pxfig = px.line( avg_mortality, x='time_period', y='obs_value', title="Average Global Child Mortality Over Time", labels={'time_period': 'Year', 'obs_value': 'Average Mortality Rate'}, markers=True)fig.update_layout( xaxis_title="Year", yaxis_title="Average Mortality Rate")fig.show()
Conclusion
This report presents an in-depth analysis of global child mortality and related health inequalities, emphasizing the importance of improved access to healthcare, clean water, and education. By examining key indicators such as GDP, mortality rates, and orphanhood trends, we observe a significant disparity between high-income and low-income countries. Interventions are urgently needed in regions with high mortality rates to reduce these disparities.
Source Code
---title: "Mapping Child Mortality and Orphanhood Trends: A UNICEF Perspective"format: html: embed-resources: true toc: true theme: cosmo code-fold: true code-tools: true code-overflow: wrap execute: echo: true # ✅ So code shows up (not hidden) freeze: auto---# Spring 2025 BAA1030 Data Analytics & Story Telling (20074)**Name** : Praghya Prakhar **Student ID**: A00039396 **Programme**: Data Analytics## Executive SummaryThis report explores global disparities in child mortality and health inequalities, focusing on data provided by UNICEF. It integrates key indicators such as child mortality rates, health access, and education, highlighting the disparities between high-income and low-income countries. The goal is to raise awareness about the urgent need for intervention in countries with the highest mortality rates.## IntroductionChild mortality remains a major issue worldwide, particularly in low-income nations. UNICEF focuses on improving healthcare, access to clean water, and education to reduce these inequalities. This report analyzes the factors contributing to high mortality rates and suggests potential policy actions to support children’s survival and well-being.# Global Child Mortality and Health Inequalities**Child mortality** remains a major issue worldwide, particularly in low-income nations. UNICEF focuses on **saving children's lives** by improving access to healthcare, clean water, and education.## Key Insights:- Child mortality rates are highest in Sub-Saharan Africa.- Economic development strongly impacts health outcomes.- Progress has been made, but disparities remain wide.```{python}#| code-fold: trueimport pandas as pdimport geopandas as gpdfrom plotnine import*import matplotlib.pyplot as pltimport geodatasets# Load the CSV filesindicator1 = pd.read_csv("unicef_indicator_1.csv")indicator2 = pd.read_csv("unicef_indicator_2.csv")metadata = pd.read_csv("unicef_metadata.csv")```# World Child Mortality Map```{python}#| code-fold: trueimport plotly.express as px# Load world map# Prepare world mapworld = gpd.read_file(r'C:\Users\hp\Desktop\UNICEF-Report\data\ne_110m_admin_0_countries\ne_110m_admin_0_countries.shp')world = world.rename(columns={"NAME_EN": "Country"})# Merge mortality datamortality_2020 = indicator1[indicator1['time_period'] ==2020]import plotly.express as pximport pandas as pd# Only keep necessary columns (mortality 2020)mortality_2020 = indicator1[indicator1['time_period'] ==2020]# Now plot using Plotlyfig = px.choropleth( mortality_2020, locations="alpha_3_code", # this must exist in your indicator1 dataset color="obs_value", hover_name="country", color_continuous_scale="Reds", title="Global Child Mortality Rates (2020)", labels={'obs_value': 'Mortality Rate (per 1000 births)'})fig.update_layout( geo=dict(showframe=False, showcoastlines=False), margin={"r":0,"t":50,"l":0,"b":0})fig.show()```# Top 10 Countries```{python}#| code-fold: true# Filter data for 2020mortality_2020 = indicator1[indicator1['time_period'] ==2020]# Sort by 'obs_value' (mortality rate)top10 = mortality_2020.sort_values(by="obs_value", ascending=False).head(10)# Create an interactive bar chart for the top 10 countries# Create a color palette (or choose one that you like)colors = ["#1f77b4", "#ff7f0e", "#2ca02c", "#d62728", "#9467bd", "#8c564b", "#e377c2", "#7f7f7f", "#bcbd22", "#17becf"]# Plot the top 10 countries with different colors(ggplot(top10, aes(x='reorder(country, obs_value)', y='obs_value', fill='country')) + geom_col() + scale_fill_manual(values=colors) +# Apply the color palette coord_flip() + labs(title="Top 10 Countries by Child Mortality Rate (2020)", x="Country", y="Mortality Rate per 1000 births") + theme_minimal())```# GDP vs Mortality```{python}#| code-fold: true# Filter data for 2020 using the correct column name ('time_period')gdp_2020 = indicator2[indicator2['time_period'] ==2020]# Merge mortality and GDP datamerged = pd.merge(mortality_2020, gdp_2020, left_on="country", right_on="country", suffixes=("_mortality", "_gdp"))# Create an interactive scatter plot for GDP vs Mortality Rateimport plotly.express as pxfig = px.scatter( merged, x='obs_value_gdp', y='obs_value_mortality', title="GDP vs Child Mortality Rate (2020)", labels={'obs_value_gdp': 'GDP per Capita', 'obs_value_mortality': 'Mortality Rate per 1000 births'}, color='obs_value_mortality', color_continuous_scale="Viridis")fig.update_layout( xaxis_title="GDP per Capita", yaxis_title="Mortality Rate per 1000 births",)fig.show()```# Global Trend Over Time```{python}#| code-fold: true# Group by time_period (which represents the year) and calculate the average mortality valueavg_mortality = indicator1.groupby('time_period')['obs_value'].mean().reset_index()# Create an interactive line plot for the average global mortality rate over timeimport plotly.express as pxfig = px.line( avg_mortality, x='time_period', y='obs_value', title="Average Global Child Mortality Over Time", labels={'time_period': 'Year', 'obs_value': 'Average Mortality Rate'}, markers=True)fig.update_layout( xaxis_title="Year", yaxis_title="Average Mortality Rate")fig.show()```# ConclusionThis report presents an in-depth analysis of global child mortality and related health inequalities, emphasizing the importance of improved access to healthcare, clean water, and education. By examining key indicators such as GDP, mortality rates, and orphanhood trends, we observe a significant disparity between high-income and low-income countries. Interventions are urgently needed in regions with high mortality rates to reduce these disparities.